
function reg (uName,pwd) {
  $.cookie($.md5(uName),$.md5(pwd),{ expires: 7 });
  $.cookie('uName',uName,{ expires: 7 });
}
function login (uName,pwd) {
  var cp = $.cookie($.md5(uName));
  if (cp && $.md5(pwd) == cp) {
    $.cookie('uName',uName,{ expires: 7 });
    alert('您已成功登录成功!')
    window.location = 'index.html';
    return;
  }
  alert('您的用户名密码不正确,请重新输入.');
}


function checkLoginForm () {
  var uName = $('#sh_name').val();
  var uPwd = $('#sh_pwd').val();
  login(uName,uPwd);
}

function checkRegForm () {
  var sh_name = $('#sh_name').val();
  if (!sh_name || !sh_name.match(/^[0-9a-zA-Z_\-]{4,20}$/)) {
    alert('请输入正确格式的用户名:4-20个字符,由字母数字下划线组成.');
    return;
  }
  var sh_pwd1 = $('#sh_pwd1').val();
  var sh_pwd2 = $('#sh_pwd2').val();
  if (!sh_pwd1 || !sh_pwd2 || sh_pwd1.length<6) {
    alert('请正确输入密码,至少6位字符');
    return;
  }
  if (sh_pwd1 != sh_pwd2) {
    alert('两次输入的密码不相同,请重新输入');
    return;
  }

  var sh_email = $('#sh_email').val();
  if (!sh_email || !emailCheck(sh_email)) {
    alert('邮箱格式有误,请重新输入');
    return;
  }
  var sh_realName = $('#sh_realName').val();
  if (!sh_realName || !cnNameCheck(sh_realName)) {
    alert('您输入的姓名有误!');
    return;
  }
  if (sh_realName.length <2 || sh_realName>5) {
    alert('您输入的姓名有误!');
    return;
  }
  if (!checkbjx(sh_realName[0])) {
    alert('您输入的姓名有误!');
    return;
  }

  var sh_id = $('#sh_id').val();
  if (!sh_id) {
    alert('请输入身份证号.');
    return;
  }
  var idRe = checkIdcard(sh_id);
  if (idRe != 0) {
    alert(idRe);
    return;
  }
  if (!$('#sh_checkbox').is(':checked')) {
    alert('请确认并同意协议.');
    return;
  }
  reg(sh_name,sh_pwd1);
  alert('注册成功!');
  window.location = '../index.html';
}

function checkbjx(name) {
    //js正则表达式  match
    //为什么此时的match方法不对
    if ("赵|钱|孙|李|周|吴|郑|王|冯|陈|楮|卫|蒋|沈|韩|杨|朱|秦|尤|许|何|吕|施|张|孔|曹|严|华|金|魏|陶|姜|戚|谢|邹|喻|柏|水|窦|章|云|苏|潘|葛|奚|范|彭|郎|鲁|韦|昌|马|苗|凤|花|方|俞|任|袁|柳|酆|鲍|史|唐|费|廉|岑|薛|雷|贺|倪|汤|滕|殷|罗|毕|郝|邬|安|常|乐|于|时|傅|皮|卞|齐|康|伍|余|元|卜|顾|孟|平|黄|和|穆|萧|尹|姚|邵|湛|汪|祁|毛|禹|狄|米|贝|明|臧|计|伏|成|戴|谈|宋|茅|庞|熊|纪|舒|屈|项|祝|董|梁|杜|阮|蓝|闽|席|季|麻|强|贾|路|娄|危|江|童|颜|郭|梅|盛|林|刁|锺|徐|丘|骆|高|夏|蔡|田|樊|胡|凌|霍|虞|万|支|柯|昝|管|卢|莫|经|房|裘|缪|干|解|应|宗|丁|宣|贲|邓|郁|单|杭|洪|包|诸|左|石|崔|吉|钮|龚|程|嵇|邢|滑|裴|陆|荣|翁|荀|羊|於|惠|甄|麹|家|封|芮|羿|储|靳|汲|邴|糜|松|井|段|富|巫|乌|焦|巴|弓|牧|隗|山|谷|车|侯|宓|蓬|全|郗|班|仰|秋|仲|伊|宫|宁|仇|栾|暴|甘|斜|厉|戎|祖|武|符|刘|景|詹|束|龙|叶|幸|司|韶|郜|黎|蓟|薄|印|宿|白|怀|蒲|邰|从|鄂|索|咸|籍|赖|卓|蔺|屠|蒙|池|乔|阴|郁|胥|能|苍|双|闻|莘|党|翟|谭|贡|劳|逄|姬|申|扶|堵|冉|宰|郦|雍|郤|璩|桑|桂|濮|牛|寿|通|边|扈|燕|冀|郏|浦|尚|农|温|别|庄|晏|柴|瞿|阎|充|慕|连|茹|习|宦|艾|鱼|容|向|古|易|慎|戈|廖|庾|终|暨|居|衡|步|都|耿|满|弘|匡|国|文|寇|广|禄|阙|东|欧|殳|沃|利|蔚|越|夔|隆|师|巩|厍|聂|晁|勾|敖|融|冷|訾|辛|阚|那|简|饶|空|曾|毋|沙|乜|养|鞠|须|丰|巢|关|蒯|相|查|后|荆|红|游|竺|权|逑|盖|益|桓|公|万俟|司马|上官|欧阳|夏侯|诸葛|闻人|东方|赫连|皇甫|尉迟|公羊|澹台|公冶|宗政|濮阳|淳于|单于|太叔|申屠|公孙|仲孙|轩辕|令狐|锺离|宇文|长孙|慕容|鲜于|闾丘|司徒|司空|丌官|司寇|仉|督|子车|颛孙|端木|巫马|公西|漆雕|乐正|壤驷|公良|拓拔|夹谷|宰父|谷梁|晋|楚|阎|法|汝|鄢|涂|钦|段干|百里|东郭|南门|呼延|归|海|羊舌|微生|岳|帅|缑|亢|况|后|有|琴|梁丘|左丘|东门|西门|商|牟|佘|佴|伯|赏|南宫|墨|哈|谯|笪|年|爱|阳|佟|第五|言|福".search(name) != -1
    ) {
        return true;
    }
    else {
        return false;
    }
}

//************************************************
//检查EMAIL
function emailCheck(str)
 {
  var reg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/;
  var flag = reg.test(str);
  return flag;
 }

//*************************
//检查中文输入
function cnNameCheck(str)
 {
  if (!str) {
    return false;
  }
  if (str.length <2 || str.length >5) {
    return false;
  }
  var reg=/^[\u4e00-\u9fa5](\s*[\u4e00-\u9fa5])*$/;
  var flag = reg.test(str);
  //alert(flag);
  return flag;
 }

function checkIdcard(idcard){
  var Errors=new Array(
  0,
  "您输入的身份证号码有误!",
  "您输入的身份证号码有误!",
  "您输入的身份证号码有误!",
  "您输入的身份证号码有误!"
  );
  var area={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"}


  var idcard,Y,JYM;
  var S,M;
  var idcard_array = new Array();
  idcard_array = idcard.split("");
  //地区检验
  if(area[parseInt(idcard.substr(0,2))]==null) return Errors[4];
  //身份号码位数及格式检验
  switch(idcard.length){
  case 15:
  if ( (parseInt(idcard.substr(6,2))+1900) % 4 == 0 || ((parseInt(idcard.substr(6,2))+1900) % 100 == 0 && (parseInt(idcard.substr(6,2))+1900) % 4 == 0 )){
  ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/;//测试出生日期的合法性
  } else {
  ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/;//测试出生日期的合法性
  }
  if(ereg.test(idcard)) return Errors[0];
  else return Errors[2];
  break;
  case 18:
  //18位身份号码检测
  //出生日期的合法性检查
  //闰年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))
  //平年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))
  if ( parseInt(idcard.substr(6,4)) % 4 == 0 || (parseInt(idcard.substr(6,4)) % 100 == 0 && parseInt(idcard.substr(6,4))%4 == 0 )){
  ereg=/^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$/;//闰年出生日期的合法性正则表达式
  } else {
  ereg=/^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/;//平年出生日期的合法性正则表达式
  }
  if(ereg.test(idcard)){//测试出生日期的合法性
  //计算校验位
  S = (parseInt(idcard_array[0]) + parseInt(idcard_array[10])) * 7
  + (parseInt(idcard_array[1]) + parseInt(idcard_array[11])) * 9
  + (parseInt(idcard_array[2]) + parseInt(idcard_array[12])) * 10
  + (parseInt(idcard_array[3]) + parseInt(idcard_array[13])) * 5
  + (parseInt(idcard_array[4]) + parseInt(idcard_array[14])) * 8
  + (parseInt(idcard_array[5]) + parseInt(idcard_array[15])) * 4
  + (parseInt(idcard_array[6]) + parseInt(idcard_array[16])) * 2
  + parseInt(idcard_array[7]) * 1
  + parseInt(idcard_array[8]) * 6
  + parseInt(idcard_array[9]) * 3 ;
  Y = S % 11;
  M = "F";
  JYM = "10X98765432";
  M = JYM.substr(Y,1);//判断校验位
  if(M == idcard_array[17]) return Errors[0]; //检测ID的校验位
  else return Errors[3];
  }
  else return Errors[2];
  break;
  default:
  return Errors[1];
  break;
  }
}
//alert(checkIdcard("220183198808081610"))
